'BINARY SEARCH THE FAA AIRMEN DATA BASE BASED ON NAME.
DIM F$(20)
CLS
PRINT
PRINT "Copyright (c) 1992, Buckmaster Publishing"
PRINT
NAME$ = COMMAND$ + " "
ON ERROR GOTO 10000
IF LEN(NAME$) = 0 GOTO NONAME
NAME$ = RTRIM$(NAME$)
NAME$ = LTRIM$(NAME$)
CDDRIVE$ = LEFT$(NAME$, 2) + "\"
OPEN CDDRIVE$ + "AIRNAME.120" FOR RANDOM AS #1 LEN = 120
FIELD #1, 13 AS F$(1), 17 AS F$(2), 32 AS F$(3), 16 AS F$(4), 4 AS F$(5), 5 AS F$(6), 1 AS F$(7), 7 AS F$(8), 3 AS F$(9), 1 AS F$(10), 2 AS F$(11), 4 AS F$(12), 1 AS F$(13), 5 AS F$(14), 7 AS F$(15), 1 AS F$(16)
FIELD #1, 120 AS R$
NAME$ = MID$(NAME$, 4, LEN(NAME$))
NAME$ = NAME$ + SPACE$(17)
NAME$ = LEFT$(NAME$, 17)
GOSUB MAIN
AGN2:
P# = P# - 1
GET #1, P#
IF NAME$ = F$(2) GOTO AGN2
AGN3:
P# = P# + 1
GET #1, P#
IF NAME$ <> F$(2) THEN END: CLOSE
GOTO PRT1
CLOSE
END
MAIN:
L# = 1
R# = INT(LOF(1) / 120)
AGN1:
P# = INT((L# + R#) / 2)
GET #1, P#
NAMEIN$ = F$(2)
'PRINT LEN(NAME$), NAME$, LEN(NAMEIN$), NAMEIN$
IF NAME$ < NAMEIN$ GOTO MINUS1
IF NAME$ = NAMEIN$ THEN RETURN
PLUS1:
L# = P# + 1
GOTO CHECK
MINUS1:
R# = P# - 1
CHECK:
IF L# <= R# GOTO AGN1
NOMATCH:
PRINT
PRINT "NO MATCH ON ", NAME$
PRINT
PRINT
RETURN
PRT1:
CLS
PRINT " First Name: "; F$(1)
PRINT " Last Name: "; F$(2)
PRINT " Street: "; F$(3)
PRINT " City: "; F$(4)
PRINT " State: "; F$(5)
PRINT " ZIP: "; F$(6)
PRINT " Medical Class: "; F$(7)
PRINT "Certificate Class: "; F$(8)
PRINT " Ratings: "; F$(9)
'PRINT ": "; F$(10)
PRINT " FAA Region: "; F$(11)
PRINT " Medical Date: "; F$(12)
'PRINT ": "; F$(13)
PRINT " Hash total: "; F$(14)
'PRINT ": "; F$(15)
PRINT " Country Code: "; F$(16)
PRINT
INPUT "Buckmaster FAA airmen's name search program. Press enter for next record ", rr$